SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paAgregarInscripcionConvocatoria]
@Agente INT,
@Convocatoria INT,
@CargoGenerico INT,
@AsignaturaGenerica INT,
@Nivel INT,
@Ciclo INT,
@Modalidad INT,
@Organizacion INT = NULL,
@Localidad1 INT,
@Localidad2 INT = NULL,
@Localidad3 INT = NULL,
@Observaciones VARCHAR(100) = NULL,
@estado int output,
@diagnostico varchar(1000) output

AS
SET NOCOUNT ON
DECLARE @ERROR  varchar(300)
SET @ERROR =''

-- SELECT @id = I.IdInscripcionConvocatoria, @cargo = I.CargoGenerico, @asignatura = I.AsignaturaGenerica, @agente = I.Agente, @convocatoria = I.Convocatoria, @localidad = I.Localidad FROM Inserted I
IF @nivel in (2,3) and (@Asignaturagenerica <>0  or @ciclo <> 1 or @CargoGenerico >1000)
	 select @ERROR= 'Verifique Cargo/Asignatura/Ciclo.'
else
IF @nivel in (2) and (@CargoGenerico =331 and @modalidad <>3)
	 select @ERROR= 'Verifique Modalidad.'
else
IF (@nivel=4 and  @ciclo =1 and @AsignaturaGenerica > 7000 and @AsignaturaGenerica < 9000)
	 select @ERROR= 'La Asignatura corresponde al 3er Ciclo.'
else
IF (@nivel=4 and @AsignaturaGenerica in (select idasignaturagenerica from tb_asignaturasgenericas where tipo=18) and @Modalidad <> 7)
	 select @ERROR= 'La Asignatura corresponde a modalidad TTP.'

else
IF (@nivel=4 and @AsignaturaGenerica in (select idasignaturagenerica from tb_asignaturasgenericas where tipo=12) and @Modalidad =7)
	 select @ERROR= 'La Asignatura corresponde a modalidad Común.'

else
IF EXISTS(SELECT * FROM tb_InscripcionesConvocatorias WHERE Agente = @agente AND CargoGenerico = @cargogenerico AND AsignaturaGenerica = @asignaturagenerica AND Convocatoria = @convocatoria AND Localidad IN (@localidad1,@localidad2,@localidad3) )
	 select @ERROR= 'Esta INSCRIPCION ya ha sido registrada.'
ELSE  

if (SELECT count(localidad) FROM tb_InscripcionesConvocatorias WHERE Agente = @agente And convocatoria=@convocatoria and cargogenerico=@cargogenerico and asignaturagenerica=@asignaturagenerica)>3
               select @ERROR= 'Esta INSCRIPCION alcanzo el limite de 3 localidades .'
else
IF @Localidad1 <> NULL 
BEGIN
       if  EXISTS (SELECT * FROM tb_PosiblesVacantes WHERE convocatoria=@convocatoria and CargoGenerico = @cargogenerico AND AsignaturaGenerica = @asignaturagenerica AND Localidad = @localidad1)
              BEGIN
                	INSERT INTO tb_InscripcionesConvocatorias (Agente, Convocatoria, CargoGenerico, AsignaturaGenerica, Nivel, Ciclo, Modalidad, Organizacion, Localidad, Observaciones, NecesitaRecalcular, Estado)
		VALUES (@Agente, @Convocatoria, @CargoGenerico, @AsignaturaGenerica, @Nivel, @Ciclo, @Modalidad, @Organizacion, @Localidad1, @Observaciones, 'N', 1)
	END
       ELSE
             select @ERROR= @ERROR+ 'La combinación CARGO: '+ CAST(@cargogenerico AS VARCHAR(8))  +'  ASIGNATURA: '+CAST(@asignaturagenerica AS VARCHAR(8))+ ' no existe en la Localidad: '+(SELECT SUBSTRING(LOCALIDAD,1,30) FROM TB_LOCALIDADES WHERE IDLOCALIDAD=@localidad1) 
END

IF @Localidad2 <> NULL
 BEGIN
       if  EXISTS (SELECT * FROM tb_PosiblesVacantes WHERE convocatoria=@convocatoria and CargoGenerico = @cargogenerico AND AsignaturaGenerica = @asignaturagenerica AND Localidad = @localidad2)
              BEGIN
                	INSERT INTO tb_InscripcionesConvocatorias (Agente, Convocatoria, CargoGenerico, AsignaturaGenerica, Nivel, Ciclo, Modalidad, Organizacion, Localidad, Observaciones, NecesitaRecalcular, Estado)
		VALUES (@Agente, @Convocatoria, @CargoGenerico, @AsignaturaGenerica, @Nivel, @Ciclo, @Modalidad, @Organizacion, @Localidad2, @Observaciones, 'N', 1)
	END
       ELSE
             select @ERROR= @ERROR  +'...............La combinación CARGO: '+ CAST(@cargogenerico AS VARCHAR(8))  +'  ASIGNATURA: '+CAST(@asignaturagenerica AS VARCHAR(8)) + ' no existe en la Localidad: '+(SELECT SUBSTRING(LOCALIDAD,1,30) FROM TB_LOCALIDADES WHERE IDLOCALIDAD=@localidad2)    
END

IF @Localidad3 <> NULL
 BEGIN
       if  EXISTS (SELECT * FROM tb_PosiblesVacantes WHERE convocatoria=@convocatoria and CargoGenerico = @cargogenerico AND AsignaturaGenerica = @asignaturagenerica AND Localidad = @localidad3)
              BEGIN
                	INSERT INTO tb_InscripcionesConvocatorias (Agente, Convocatoria, CargoGenerico, AsignaturaGenerica, Nivel, Ciclo, Modalidad, Organizacion, Localidad, Observaciones, NecesitaRecalcular, Estado)
		VALUES (@Agente, @Convocatoria, @CargoGenerico, @AsignaturaGenerica, @Nivel, @Ciclo, @Modalidad, @Organizacion, @Localidad3, @Observaciones, 'N', 1)
	END
       ELSE
             select @ERROR= @ERROR+ '................La combinación CARGO: '+CAST(@cargogenerico AS VARCHAR(8))  +'  ASIGNATURA: '+CAST(@asignaturagenerica AS VARCHAR(8)) + ' no existe en la Localidad: '+(SELECT SUBSTRING(LOCALIDAD,1,30) FROM TB_LOCALIDADES WHERE IDLOCALIDAD=@localidad3)        
END

IF @ERROR<>''
   BEGIN
            select  @diagnostico=@error
            select @estado=1
	--RAISERROR(@ERROR,16,1)
	--COMMIT TRANSACTION
   END
ELSE
   begin
          select   @DIAGNOSTICO='La inscripción se realizó satisfactoriamente.'
          select @estado=0
   end
GO
GRANT EXECUTE ON  [dbo].[paAgregarInscripcionConvocatoria] TO [Juntas]
GO
